Попробуем теперь сделать полноэкранное приложение.
Для упрощения жизни возьмем пример из шага 16, там где мы рисовали 5 точек. Как вы помните для установки полноэкранного режима необходимо заполнить некоторые поля структуры DEVMODE. Сделаем эти установки в функции PreCreateWindow класса CMainFrame:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
cs.x = cs.y = 0;
cs.cx = GetSystemMetrics(SM_CXSCREEN);
cs.cy = GetSystemMetrics(SM_CYSCREEN);
cs.style = WS_POPUP;
cs.hMenu = NULL;
DEVMODE dmScreenSettings;
memset(&dmScreenSettings, 0, sizeof(DEVMODE));
dmScreenSettings.dmSize = sizeof(DEVMODE);
dmScreenSettings.dmPelsWidth = GetSystemMetrics(SM_CXSCREEN);
dmScreenSettings.dmPelsHeight = GetSystemMetrics(SM_CYSCREEN);
dmScreenSettings.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;
ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN);
return TRUE;
}
Практически все здесь взято из полноэкраного примера на Win32 API.
В функцию OnClose того же класса добавим стоку, восстанавливающую все настройки:
void CMainFrame::OnClose()
{
// TODO: Add your message handler code here and/or call default
ChangeDisplaySettings(NULL, 0);
CFrameWnd::OnClose();
}
Вот и все. Соберите этот проект. Выйти из програмки можно нажав Alt+F4. При желании можно добавить сюда выход по нажанию какой-нибудь другой клавиши.